#include <iostream>
#include <signal.h>
#include <unistd.h>
#include <string.h>
#include <signal.h>
using namespace std;

// struct sigaction act, oldact;
// void sigcb (int signo)
// {
//     cout << "信号 ： " << signo << endl;
//     sleep(2);
// }
// int main()
// {
//     memset(&act, 0, sizeof(act));
// 	memset(&oldact, 0, sizeof(oldact));
//     act.sa_handler = sigcb;
//     act.sa_flags = 0;
//     sigaction(2, &act, &oldact);

//     sleep(2);
//     return 0;
// }

// struct sigaction act, oldact;
// void sigcb (int signo)
// {
//     cout << "信号 ： " << signo << endl;
//     sleep(2);
// }



int main()
{
    cout << "mypid: " << getpid() << endl;
    sigset_t sg;
    sigemptyset(&sg);
    sigaddset(&sg, 2);
    sigaddset(&sg, 40);
    sigprocmask(SIG_SETMASK, &sg, nullptr);

    cout << "打印block表： " << endl;
    for (int i = 40; i > 0; i--)
    {
        if (sigismember(&sg, i))
            cout << "1";
        else
            cout << "0";
    }
    cout << "\n";
    cout << "设置堵塞完成" << endl;
    sleep(30);

    sigset_t pending;

    sigpending(&pending);

    cout << "sigpengding表如下: " << endl;
    for (int i = 40; i > 0; i--)
    {
        if (sigismember(&pending, i))
            cout << "1";
        else
            cout << "0";
    }
    cout << endl;

    sleep(1);
    return 0;
}
